﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Windows.Forms;

namespace QLTuyenXe.DAL
{
    class MyConnectUnit
    {
        String server;
        String database;
        String username;
        String password;
        MyConnect myConn;
        // Khởi tạo đối tượng thực thi các câu lệnh SQL
        public MyConnectUnit()
        {
            server = Properties.Settings.Default.server;
            database = Properties.Settings.Default.database;
            username = Properties.Settings.Default.username;
            password = Properties.Settings.Default.password;
            myConn = new MyConnect(server, database, username, password);
        }
        //Thêm thứu tự sắp xếp
        private String AddOrder(String query, String order)
        {
            if (order != null)
            {
                query += "ORDER BY" + order;
            }
            return query;
        }
        //Thêm điều kiện vào cau truy vấn
        private String AddCondition(String query, String condition)
        {
            if (condition != null)
            {
                query += " WHERE " + condition;
            }
            return query;
        }

        // Thêm điều kiện On
        private String AddOn(String query, String on)
        {
            if (on != null)
            {
                query += " ON " + on;
            }
            return query;
        }

        // Thêm bảng nối
        private String AddLeftJoin(String query, String table)
        {
            if (table != null)
            {
                query += " LEFT JOIN " + table;
            }
            return query;
        }

        private String AddInnerJoin(String query, String table)
        {
            if (table != null)
            {
                query += " INNER JOIN " + table;
            }
            return query;
        }

        //Đọc dữ liệu từ bảng
        public DataTable Select(String table, String columns, String condition)
        {
            return Select(table, columns, condition, null);
        }
        public DataTable Select(String table, String columns)
        {
            return Select(table, columns, null);
        }

        public DataTable Select(String table)
        {
            return Select(table, "*", null);
        }
        //Lấy về tập các cột và các giá trị tương ứng với các cột
        private String AddInsertValue(ArrayList columnDatas)
        {
            String query = "", insertValues = "";
            //int t = 0;
            foreach (ColumnData columnData in columnDatas)
            {
                query += columnData.Name + ",";
                insertValues += "N'" + columnData.Value + "',";
    //=======================================================================================================
               //Đoạn này của thầy An thừa do ta đã mã hóa đều là kiểu string nên luôn luôn có chữ N ở trước (Mr.Tuyên -K54HTTT)
                //Code không được gọn lắm , nên bỏ đối tượng Columns trong DAO và viết cách khác (Mr.Tuyên K_54HTTT)
                /*
                switch (columnData.DataType)
                {
                    case 1: query += columnData.Name + ",";
                        insertValues += "N'" + columnData.Value + "',";
                        break;
                    case 2: query += columnData.Name + ",";
                        insertValues += columnData.Value + ",";
                        break;
                    case 3: query += columnData.Name + ",";
                        insertValues += "'" + columnData.Value + "',";
                        break;

                }
                */
                //End đoạn thừa của thầy An
    //=========================================================================================================
                //t += 1;
            }
            //MessageBox.Show("SÔ LAN LAP:" + t);
            return query + "\\" + insertValues;
        }

        public int Insert(String table, ArrayList columnDatas)
        {
            String query = "INSERT INTO " + table + "(";
            String insertValues = " VALUES(";
            String Ar;
            Ar = this.AddInsertValue(columnDatas);
            query += Ar.Split('\\')[0];
            insertValues += Ar.Split('\\')[1];
            query = query.Substring(0, query.Length - 1) + ")";
            insertValues = insertValues.Substring(0, insertValues.Length - 1) + ");";
            query += insertValues;
            System.Windows.Forms.MessageBox.Show(query.ToString());
            return myConn.Write(query);
        }

        //Cập nhật dữ liệu cho bảng
        public int Update(String table, ArrayList columnDatas, String condition)
        {
            String query = "UPDATE " + table + " SET ";
            String updateValue = "";
            foreach (ColumnData columnData in columnDatas)
            {
                updateValue += columnData.Name + "=N'"
                        + columnData.Value + "',";
                //======================================================
                //Cái này thừa
                /*
                switch (columnData.DataType)
                {
                    case 1: updateValue += columnData.Name + "=N'"
                        + columnData.Value + "',";
                        break;
                    case 2: updateValue += columnData.Name + "="
                        + columnData.Value + ",";
                        break;
                }
                 */
                //=======================================================
            }
            updateValue = updateValue.Substring(0, updateValue.Length - 1);
            query += updateValue;
            query = this.AddCondition(query, condition);
            query += ";";
            return myConn.Write(query);
        }
        //Xóa dữ liệu
        public int Delete(String table, String condition)
        {
            String query = "DELETE FROM " + table;
            query = this.AddCondition(query, condition);
            return myConn.Write(query);
        }
        //Lấy giá trị lớn nhất
        public int GetMaxId(String table, String primaryName)
        {
            DataTable tb = this.Select(table, primaryName);
            int maxId = 0;
            foreach (DataRow r in tb.Rows)
            {
                if (maxId < int.Parse(r[primaryName].ToString()))
                    maxId = int.Parse(r[primaryName].ToString());
            }
            return maxId;
        }


//=============================================================================================
        //(Mr.Tuyên)
        //----------------------------------------------------------------
        //Đọc dữ liệu từ CSDL
        //Dùng cho Giá thuê (Mr.Tuyên)
        //Không được thay đổi(Mr.Tuyên)
        //Danh sách hợp đồng
        //phan quyen
        public DataTable Select(String table, String columns, String condition, String order)
        {
            String query = "SELECT DISTINCT " + columns + " FROM " + table;
            query = this.AddCondition(query, condition);
            query = this.AddOrder(query, order);
            query += ";";
            return myConn.Read(query);
        }
        //-----------------------------------------------------------------
  // load len combox nhom trong phan quyen
        //Cái này chưa dung đến

        /*public DataTable Select_Nhom1(string table, string columns, string columns1)
        {
            String query = "SELECT DISTINCT(" + columns + "), " + columns1 + " FROM " + table;
            //query = this.AddCondition(query, condition);
            //query = this.AddOrder(query, order);
            //query += ";";
            return myConn.Read(query);
        }
        */
      
    //======================================================================================================================================================================================
        //Hàm nối 3 bảng Giá thuê, quản lý xe, Điều hành (Mr.Tuyên -K54_HTTT))
        //load lên bảng giá thuê va bang hop dong
        //Khong dung chung duoc => lam cai khac
        //Không được thay đổi
        public DataTable SelectGia(String table1, String table2, String table3, String conditon1, String condition2, String condition3, String condition4)
        {
            String query = "SELECT * FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2 + " INNER JOIN " + table3 + " ON " + condition2 + " = " + condition3;
            query = this.AddCondition(query, condition4);
            query += ";";
            return myConn.Read(query);
        }
  //======================================================================================================================================================================================

  //=========================================================================================================
        //Hàm 1 table HOP_DONG với điều kiện (Mr.Tuyên-K_54HTTT)
        //Cái này cần xem xét lại vì có thể dùng chung với cai của Thầy An được.
        //Thui dung cai nay cũng dc
        //Dung cho kiem tra ten dang nhap vào da ton tai hay chua
        public DataTable Selectid(String table, String condition)
        {
            String query = "SELECT * FROM " + table + " Where " + condition;
            return myConn.Read(query);
        }
        //End (Mr.Tuyên_K54HTTT)
  //=============================================================================================================

//====================================
        //Cai dang nhap
        //load len dia chỉ, so dt khach hang trong hop dông
        //lay thoi gian thue cua xe nhap trong hop dong
        public DataTable SelectDN(String table, String condition, string condition2)
        {
            String query = "SELECT DISTINCT * FROM " + table;
            query = this.AddConditions(query, condition, condition2);
            query += ";";
            return myConn.Read(query);
        }
//==================================
        // lay thoi gian thue ca loai xe trrong hop dong
        public DataTable SelectTG(String table, String condition, string condition2, string column, string column2)
        {
            String query = "SELECT DISTINCT "+ column +", "+ column2 +" FROM " + table;
            query = this.AddConditions(query, condition, condition2);
            query += ";";
            //DataTable dtb = myConn.Read(query);
            //return dtb.Rows[0][column].ToString();
            return myConn.Read(query);
        }


        //load ten khach hang trong hop dong
        //Cai dang nhap
        public DataTable SelectKH(String table)
        {
            String query = "SELECT DISTINCT * FROM " + table;
            return myConn.Read(query);
        }



  //=============================================================================================================================      
        //Hàm nối 2 table de load len combobox cua form gia thue (Mr.Tuyên K_54HTTT)
        //Load len combobox ma xe+ten xe cua bang GIA_THUÊ (chay on)
        //Và dùng cho cả load lên combobox ma xe _ ten xe của bảng DOANH_THU (chỉ những xe ở trạng thái cho thuê mới dc load lên)
       // Dùng cho cả User nữa
        // tìm kiem trong danh sach hop dong
         
        //Kiểm tra xem có xóa được không
        public DataTable Select(String table1, String table2, String conditon1, String condition2, String condition3)
        {
            String query = "SELECT * FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2;

            query = this.AddCondition(query, condition3);
            query += ";";
            return myConn.Read(query);
        }

        // Kiem tra xe để xóa
        public DataTable Select(String table1, String table2, String table3, String table4, String table5, String conditon1, String condition2, String condition3, String condition4, String condition5, String condition6, String condition7, String condition8, String condition9)
        {
            String query = "SELECT * FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + " = " + condition2 + " INNER JOIN " + table3 + " ON " + condition3 + " = " + condition4 + " INNER JOIN " + table4 + " ON " + condition5 + " = " + condition6 + " INNER JOIN " + table5 + " ON " + condition7 + "  =  " + condition8;
;

            query = this.AddCondition(query, condition9);
            query += ";";
            return myConn.Read(query);
        }
        //End 2 join table (Mr.Tuyên K_54HTTT)
  //==============================================================================================================================
//=========================================================
        // kiem tra khi them dư liệu vào bảng danh thu
        // xe đó chỉ dc thêm 1 lần trong ngày(Mr.TuyênK54HTTT)
        public DataTable Select_KiemtraDT(String table1, String conditon1, String condition2, String condition3)
        {
            String query = "SELECT * FROM " + table1 ;

            query = this.AddCondition(query, conditon1, condition2, condition3);
            query += ";";
            return myConn.Read(query);
        }

        //end
//============================================================

//===================================================
        // kiem tra khach hàng có ton tai hay khong
        public DataTable Select_KiemtraKH(String table1, String conditon1, String condition2, String condition3, string condition4)
        {
            String query = "SELECT * FROM " + table1;

            query = this.AddConditions(query, conditon1, condition2, condition3, condition4);
            query += ";";
            return myConn.Read(query);
        }
        private String AddConditions(String query, String condition1, String condition2, string condition3, string condition4)
        {
            if ((condition1 != null) && (condition2 != null))
            {
                query += " WHERE " + condition1 + " and " + condition2 + "and " + condition3+ "and " + condition4 ;
            }
            return query;
        }
        //end
//===============================================================



//============================================================
        //Kiem tra quyền khi đăng nhập
        public DataTable SelectQuyen(String table1, String table2, String conditon1, String condition2, String condition3, string condition4)
        {
            String query = "SELECT * FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2;

            query = this.AddConditions(query, condition3, condition4);
            query += ";";
            return myConn.Read(query);
        }

//===============================================================

  //======================================================================================================
        //Hàm nối 2 bảng (DIEU_HANH, QUAN_LY_XE)load cai combobox bien so, loai cho form 
        //GIA THUE (Mr.Tuyên K_54HTTT).
        public DataTable Select_Loai(String table1, String table2, String conditon1, String condition2, String condition3, String condition4, String condition5)
        {
            String query = "SELECT * FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2;

            query = this.AddCondition(query, condition3, condition4, condition5);
            query += ";";
            return myConn.Read(query);
        }
        //End (Mr.Tuyên K_54HTT)
   //=========================================================================================================

//======================================================================================================
        //Hàm nối 2 bảng (KHACH_HANG.HOP_DONG)load len danh hop dong 
        //GIA THUE (Mr.Tuyên K_54HTTT).
        public DataTable Select_HD(String table1, String table2, String conditon1, String condition2)
        {
            String query = "SELECT DISTINCT * FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2;
            return myConn.Read(query);
        }
        //End (Mr.Tuyên K_54HTT)
//=========================================================================================================


  //======================================================================================
        // Hàm 2 điều kiện (Mr.Tuyên K54HTTT)
        //Hàm tìm kiếm của bảng GIA_THUÊ
        //Với điều kiện là trạng thái cho thuê và dk từ lớp BLL truyền xuống ở textbox tìm kiếm
        public DataTable Tim_Kiem_Gia_Thue(String table1, String table2, String table3, String conditon1, String condition2, String condition3, String condition4, String condition5)
        {
            String query = "SELECT * FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2 + " INNER JOIN " + table3 + " ON " + condition2 + " = " + condition3;
            query = this.AddConditions(query, condition4, condition5);
            query += ";";
            return myConn.Read(query);
        }
        private String AddConditions(String query, String condition1, String condition2)
        {
            if ((condition1 != null) && (condition2 != null))
            {
                query += " WHERE " + condition1 + " and " + condition2;
            }
            return query;
        }
        //end (Mr.Tuyên)
  //===============================================================================================================

  //=============================================================================================================
        //hàm láy 3 dieu kien (Mr.Tuyen)
        //Dang tim chưa biết cái này dùng cho cai nào
        //Xóa lại bị lôi =>k lam lai dc
        private String AddCondition(String query, String condition1, String condition2, String condition3)
        {
            if ((condition1 != null) && (condition2 != null))
            {
                query += " WHERE " + condition1 + " and " + condition2 + " and " + condition3;
            }
            return query;
        }
        //End (Mr.Tuyên K54_HTTT)
   //==========================================================================================


  //============================================================================================================================================================================================
        //K can trang thai vì cái này no ở quá khứ
        // Hàm dùng để nối 4 bảng Quanly, doanh thu, dieu hanh, tuyenxe , để tính doanh thu (Mr.Tuyên K54_HTTT)
        public DataTable Select(String table1, String table2, String table3, String table4, String conditon1, String condition2, String condition3, String condition4, String condition5)
        {
            String query = "SELECT DISTINCT * FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2 + " INNER JOIN "
                            + table3 + " ON " + condition2 + " = " + condition3 + " INNER JOIN " + table4 + " ON " + condition4 + " = " + condition5;
            //query = this.AddCondition(query, condition6);
            //query += ";";
            return myConn.Read(query);
        }
        //End 4 table (Mr.Tuyên K54_HTTT)
   //=============================================================================================================================================================================================
//=================================================================
        //Ham load len combox ma xe va ten xe trong daonh thu dungf cho tim kiem voi dk laf ma xe hoac ten xe
        public DataTable Select_MT(String table1, String table2, String table3, String table4,String colum1, String column2 , String conditon1, String condition2, String condition3, String condition4, String condition5)
        {
            String query = "SELECT DISTINCT("+ colum1 +"), "+ column2 +"   FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2 + " INNER JOIN "
                            + table3 + " ON " + condition2 + " = " + condition3 + " INNER JOIN " + table4 + " ON " + condition4 + " = " + condition5;
            //query = this.AddCondition(query, condition6);
            //query += ";";
            return myConn.Read(query);
        }

        //end (Mr.Tuyen)
//==================================================================



//====================================================
        //tìm kiem với dk là mã xe(ten xe) với tháng
        // Hàm dùng để nối 4 bảng Quanly, doanh thu, dieu hanh, tuyenxe  (Mr.Tuyên K54_HTTT)
        public DataTable SelectTK_DT(String table1, String table2, String table3, String table4, String conditon1, String condition2, String condition3, String condition4, String condition5, string condition6, string condition7)
        {
            String query = "SELECT DISTINCT * FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2 + " INNER JOIN "
                            + table3 + " ON " + condition2 + " = " + condition3 + " INNER JOIN " + table4 + " ON " + condition4 + " = " + condition5;
            //thay cais addcondition6 bang AddConditions
            query = this.AddConditions(query, condition6, condition7);
            //query += ";";
            return myConn.Read(query);
        }
        //End 4 table (Mr.Tuyên K54_HTTT)
        //===============================================================
//===================================================



//================================================================================
        //load theo thang o bảnh doanht hu xe chay tuyen
        public DataTable SelectThangDT(String table1, String table2, String table3, String table4, String conditon1, String condition2, String condition3, String condition4, String condition5, string condition6)
        {
            String query = "SELECT DISTINCT * FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2 + " INNER JOIN "
                            + table3 + " ON " + condition2 + " = " + condition3 + " INNER JOIN " + table4 + " ON " + condition4 + " = " + condition5;
            query = this.AddCondition(query, condition6);
            query += ";";
            return myConn.Read(query);
        }
//====================================================================

  //=================================================================================================
        //Cái này thử xem nối 3 bảng và loại bỏ dòng trùng nhau (Mr.Tuyên)
        //Khi load lên combobox(Họp đồng ,Điều hành, quản lý xe) ) khi load lên giá(Dieu hành, gia thuê, quan lý xe) thì bị mất
        //Mục đích thử xem load 1 lúc cả 3 bảng xem có bị lỗi như thê snuax không ! hihi
        //2 cai dieu kien cuoi de loa gia theo xe tu bang hop dong
        //Ket qua ok, neen giu lai
        public DataTable Select_ThuXem(String table1, String table2, String table3, String column1, String column2, String column3, String conditon1, String condition2, String condition3, String condition4)
        {
            String query = "SELECT DISTINCT " + column1 + ", " + column2 + "," + column3 + " FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2 + " INNER JOIN " + table3 + " ON " + condition2 + " = " + condition3;
            query = this.AddCondition(query, condition4);
            query += ";";
            //System.Windows.Forms.MessageBox.Show(query.ToString());
            return myConn.Read(query);
        }

        //End (Mr.Tuyên)
   //=================================================================================================

  //===========================================================================================
        //hàm đếm xem bao nhiêu dòng để kiểm tra điều kiện số xe thuê luôn nhỏ hơn hoặc bằng số xe hiện có.
        //(Mr.Tuyên K_54HTTT)
        /*public string Select_DieuKien_HopDong(String table1, String table2, String column1, String column2, String column3, String conditon1, String condition2, String condition4, String condition5, String condition6)
        {
            String query = "SELECT COUNT(*) AS " + column1 + " FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2;
            query = this.AddCondition(query, condition4, condition5, condition6);
            DataTable dtb = myConn.Read(query);
            return dtb.Rows[0][column1].ToString();
        }*/
        public string Select_DieuKien_HopDong(String table1, String table2, String table3, String conditon1, String condition2, String condition3, String condition4, string condition5, string condition6, string column)
        {
            String query = "SELECT COUNT(*) "+ column +" FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2 + " INNER JOIN " + table3 + " ON " + condition2 + " = " + condition3;
            query = this.AddCondition(query, condition4, condition5, condition6);
            DataTable dtb = myConn.Read(query);
            return dtb.Rows[0][column].ToString();
        }
        //End (Mr.Tuyên K_54HTTT)
  //===========================================================================================
//=========================================
        //Dem ten xe vaf load trong hop dong dung de kiem tra so xe conf lai
        public string SelectKT(String table, String condition, string condition2, string column)
        {
            String query = "SELECT COUNT(DISTINCT tenxe) AS " + column + "  FROM " + table;
            query = this.AddConditions(query, condition, condition2);
            query += ";";
            DataTable dtb = myConn.Read(query);
            return dtb.Rows[0][column].ToString();
        }
//==============================================================================
        //trương hop  trong hop dong: tinh so xe da thue
        //Dem ten xe vaf load trong hop dong dung de kiem tra so xe conf lai
        public string SelectKT1(String table, String condition, string condition2, string column)
        {
            String query = "SELECT COUNT(tenxe) AS " + column + "  FROM " + table;
            query = this.AddConditions(query, condition, condition2);
            query += ";";
            DataTable dtb = myConn.Read(query);
            return dtb.Rows[0][column].ToString();
        }



        //Dem so xe da tra trong hop dong
        public string SelectKT1(String table, String condition, string condition2, string column, string condition3)
        {
            String query = "SELECT COUNT(*) AS " + column + "  FROM " + table;
            query = this.AddCondition(query, condition, condition2, condition3);
            query += ";";
            DataTable dtb = myConn.Read(query);
            return dtb.Rows[0][column].ToString();
        }


  //======================================================================================================
        //Ham này load lên combox gia theo loai xe,định cho cũng hàm loai nhwung báo lỗi, mãi k dc nên làm cái mơi
        //(Mr.Tuyên)
        //Cua cai HOP_DONG
        public DataTable Select_ThuXem2(String table1, String table2, String table3, String column1, String column2, String column3, String conditon1, String condition2, String condition3, String condition4, String condition5, String condition6)
        {
            String query = "SELECT DISTINCT " + column1 + ", " + column2 + "," + column3 + " FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2 + " INNER JOIN " + table3 + " ON " + condition2 + " = " + condition3;
            query = this.AddCondition(query, condition4, condition5, condition6);
            query += ";";
            return myConn.Read(query);
        }

        //End hàm load lên gia của bảng hop đong (Mr.Tuyên)
  //====================================================================================================

  //====================================================================================================
        //Hàm load loai xe, bien so theo ma xe cuar bang DOANH_THU (Mr.Tuyen)
        //4 điều kiện tu bảng nối(QUAN_LY_XE, DIEU_HANH, TUYEN_XE) và 2 dk từ trên(TRang thái, ma xe)
        public DataTable Select_DoanhThu(String table1, String table2, String table3, String column1, String column2, String column3, String conditon1, String condition2, String condition3, String condition4, String condition5, String condition6)
        {
            String query = "SELECT DISTINCT " + column1 + ", " + column2 + "," + column3 + " FROM " + table1 + " INNER JOIN " + table2 + " ON " + conditon1 + "  =  " + condition2 + " INNER JOIN " + table3 + " ON " + condition3 + " = " + condition4;
            //thay AddCondition6 bang AddConditions
            query = this.AddConditions(query, condition5, condition6);
            query += ";";
            return myConn.Read(query);
        }
        //-----------------------------------------------------------------------------------------------
        //2 điều kiện
        private String AddCondition6(String query, String condition, String condition1)
        {
            if (condition != null)
            {
                query += " WHERE " + condition + " AND " + condition1;
            }
            return query;
        }
        //----------------------------------------------------------------
        //End (Mr.Tuyen)
   //=====================================================================================================
   //==========================================================================
        //Hàm lấy giá trị lớn nhất (Mr.Tuyên K_54HTTT)
        public string GetTopDataCell(string Table, string orderByColumn)
        {
            string query = "SELECT TOP 1 " + orderByColumn + " FROM " + Table + " ORDER BY " + orderByColumn + " DESC";
            DataTable dtb = myConn.Read(query);
            return dtb.Rows[0][orderByColumn].ToString();
        }
        // End (Mr.Tuyên)
   //============================================================================
//=============================================================================================

        // Luân

        public int BackUp(String path)
        {
            String query = "BACKUP DATABASE " + database + " TO DISK=N'" + path + ".bak';";
            return myConn.Write(query);
        }

        public int Restore(String path)
        {
            String query = "USE master RESTORE DATABASE "+ database +" FROM DISK = '"+ path +"' WITH REPLACE, RECOVERY, STATS = 10, MOVE 'QUANLYXE' TO N'C:\\Program Files\\Microsoft SQL Server\\MSSQL.2\\MSSQL\\Data\\QUANLYXE.mdf', MOVE 'QUANLYXE_Log' TO N'C:\\Program Files\\Microsoft SQL Server\\MSSQL.2\\MSSQL\\Data\\QUANLYXE.ldf' GO";
            return myConn.Write(query);
        }

        // Lay cac thuoc tinh cho form LaiXe
        public DataTable Selects(String table, String table1, String table2, String columns1, String columns2, String columns3, String columns4, String columns5, String columns6, String on, String on1)
        {
            String query = "SELECT " + columns1 + ", " + columns2 + ", " + columns3 + ", " + columns4 + ", " + columns5 + ", " + columns6 + " FROM " + table; // +" LEFT JOIN " + table1;
            query = this.AddLeftJoin(query, table1);
            query = this.AddOn(query, on);
            query = this.AddLeftJoin(query, table2);
            query = this.AddOn(query, on1);
            //query += 
            query += ";";
            return myConn.Read(query);
        }

        // Lay cac thuoc tinh cho form LaiXe voi dieu kiem tim kiem
        public DataTable Selects(String table, String table1, String table2, String columns1, String columns2, String columns3, String columns4, String columns5, String columns6, String on, String on1, String condition)
        {
            String query = "SELECT " + columns1 + ", " + columns2 + ", " + columns3 + ", " + columns4 + ", " + columns5 + ", " + columns6 + " FROM " + table; // +" LEFT JOIN " + table1;
            query = this.AddLeftJoin(query, table1);
            query = this.AddOn(query, on);
            query = this.AddLeftJoin(query, table2);
            query = this.AddOn(query, on1);
            query = this.AddCondition(query, condition);
            //query += 
            query += ";";
            return myConn.Read(query);
        }

        public DataTable Selects(String table, String table1, String table2, String columns1, String columns2, String columns3, String columns4, String on, String on1)
        {
            String query = "SELECT " + columns1 + ", " + columns2 + ", " + columns3 + ", " + columns4 + " FROM " + table; // +" LEFT JOIN " + table1;
            query = this.AddLeftJoin(query, table1);
            query = this.AddOn(query, on);
            query = this.AddLeftJoin(query, table2);
            query = this.AddOn(query, on1);
            //query += 
            query += ";";
            return myConn.Read(query);
        }


        // Lấy về id, tentuyen, bienso, giave cua 3 bang TUYENXE, QUAN_LY_XE, DIEU_HANH, với trạng thái "Chạy tuyến"
        public DataTable SelectTXs(String table1, String table2, String table3, String columns1, String columns2, String columns3, String columns4, String columns5, String on, String on1, String condition)
        {
            String query = "SELECT " + columns1 + ", " + columns2 + ", " + columns3 + ", " + columns4 + ", " + columns5 + " FROM " + table1; // +" LEFT JOIN " + table1;
            query = this.AddInnerJoin(query, table2);
            query = this.AddOn(query, on);
            query = this.AddInnerJoin(query, table3);
            query = this.AddOn(query, on1);
            query = this.AddCondition(query, condition);
            query += ";";
            return myConn.Read(query);
        }

        // Tìm kiếm tuyến xe theo điều kiện
        public DataTable SelectTX(String table1, String table2, String table3, String columns1, String columns2, String columns3, String columns4, String columns5,  String on, String on1, String condition, String condition1)
        {
            String query = "SELECT " + columns1 + ", " + columns2 + ", " + columns3 + ", " + columns4 + ", " + columns5 + " FROM " + table1; // +" LEFT JOIN " + table1;
            query = this.AddLeftJoin(query, table2);
            query = this.AddOn(query, on);
            query = this.AddLeftJoin(query, table3);
            query = this.AddOn(query, on1);
            query = this.AddCondition(query, condition);
            query += " AND ";
            query += condition1;
            query += ";";
            return myConn.Read(query);
        }


    }


}
